package IO_study.bytesStream;

import java.io.*;

/**
 * 学会使用字节流完成文件的复制(支持一切文件类型的复制)
 */
public class CopyDemo5 {
    public static void main(String[] args) {
        InputStream is = null;
        OutputStream os = null;
        /*
            在JDK7时:
                释放资源操作可以放在try(资源){} 小括号里,在代码结束后会自动关闭流
                try的小括号里只能写资源对象,对象要实现或间接实现AutoCloseable接口
         */
        try {
            // 1.创建一个字节流输入流管道与源文件接通
            is = new FileInputStream("");

            // 2.创建一个字节输出流管道与目标文件接通
            os = new FileOutputStream("");

            // 3.定义一个字节数组转移数据
            byte[] buffer = new byte[1024];
            int len; // 记录每次读取的字节数
            while ((len = is.read(buffer)) != -1) {
                os.write(buffer, 0, len);
            }
            System.out.println("复制完成了");


        } catch (IOException e) {
            e.getStackTrace();
        } finally {
            // 哪怕上面有return语句,也必须先执行finally语句块里面的代码
            // 开发中不建议在finally代码块里写return

            //关闭流
            try {
                if (os != null) os.close();
                if (is != null) is.close();
            } catch (IOException e) {
                e.getStackTrace();
            }
        }
    }
}
